function LOWORD(self, l)
    return bit.band(l, 65535)
end
function HIWORD(self, l)
    return bit.band(bit.arshift(l, 16), 65535)
end
function MAKELONG(self, a, b)
    return bit.band(bit.bor(bit.lshift(bit.band(b, 65535), 16), bit.band(a, 65535)), 4294967295)
end
function LOBYTE(self, l)
    return bit.band(l, 255)
end
function HIBYTE(self, l)
    return bit.band(bit.arshift(l, 8), 255)
end